﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SimpleData.Infrastructure.Serialization
{
	/// <summary>
	/// Realiza a conversão entre um array de bytes e o object <paramref name="TValue"/>
	/// </summary>
	/// <typeparam name="TValue"></typeparam>
	public interface IDataObjectSerializable<out TValue>
	{
		/// <summary>
		/// Obtém o valor
		/// </summary>
		TValue Value
		{ get; }

		/// <summary>
		/// Obtém <see cref="Value"/> serializado
		/// </summary>
		byte[] SerializedValue
		{ get; }

		/// <summary>
		/// Notifica que o valor foi alterado
		/// </summary>
		void ValueChanged();
	}

}
